// components/address-picker/address-picker.js
import request from '../../utils/request'
Component({
  /**
   * 组件的属性列表
   */
  properties: {

  },

  /**
   * 组件的初始数据
   */
  data: {
    value: [0, 0, 0, 0],
    region0: [{
        "code": -1,
        "name": "请选择",
      },
      {
        "code": "11",
        "name": "北京市",
        "level": "0",
        "parent": null
      },
      {
        "code": "12",
        "name": "天津市",
        "level": "0",
        "parent": null
      },
      {
        "code": "13",
        "name": "河北省",
        "level": "0",
        "parent": null
      },
      {
        "code": "14",
        "name": "山西省",
        "level": "0",
        "parent": null
      },
      {
        "code": "15",
        "name": "内蒙古自治区",
        "level": "0",
        "parent": null
      },
      {
        "code": "21",
        "name": "辽宁省",
        "level": "0",
        "parent": null
      },
      {
        "code": "22",
        "name": "吉林省",
        "level": "0",
        "parent": null
      },
      {
        "code": "23",
        "name": "黑龙江省",
        "level": "0",
        "parent": null
      },
      {
        "code": "31",
        "name": "上海市",
        "level": "0",
        "parent": null
      },
      {
        "code": "32",
        "name": "江苏省",
        "level": "0",
        "parent": null
      },
      {
        "code": "33",
        "name": "浙江省",
        "level": "0",
        "parent": null
      },
      {
        "code": "34",
        "name": "安徽省",
        "level": "0",
        "parent": null
      },
      {
        "code": "35",
        "name": "福建省",
        "level": "0",
        "parent": null
      },
      {
        "code": "36",
        "name": "江西省",
        "level": "0",
        "parent": null
      },
      {
        "code": "37",
        "name": "山东省",
        "level": "0",
        "parent": null
      },
      {
        "code": "41",
        "name": "河南省",
        "level": "0",
        "parent": null
      },
      {
        "code": "42",
        "name": "湖北省",
        "level": "0",
        "parent": null
      },
      {
        "code": "43",
        "name": "湖南省",
        "level": "0",
        "parent": null
      },
      {
        "code": "44",
        "name": "广东省",
        "level": "0",
        "parent": null
      },
      {
        "code": "45",
        "name": "广西壮族自治区",
        "level": "0",
        "parent": null
      },
      {
        "code": "46",
        "name": "海南省",
        "level": "0",
        "parent": null
      },
      {
        "code": "50",
        "name": "重庆市",
        "level": "0",
        "parent": null
      },
      {
        "code": "51",
        "name": "四川省",
        "level": "0",
        "parent": null
      },
      {
        "code": "52",
        "name": "贵州省",
        "level": "0",
        "parent": null
      },
      {
        "code": "53",
        "name": "云南省",
        "level": "0",
        "parent": null
      },
      {
        "code": "54",
        "name": "西藏自治区",
        "level": "0",
        "parent": null
      },
      {
        "code": "61",
        "name": "陕西省",
        "level": "0",
        "parent": null
      },
      {
        "code": "62",
        "name": "甘肃省",
        "level": "0",
        "parent": null
      },
      {
        "code": "63",
        "name": "青海省",
        "level": "0",
        "parent": null
      },
      {
        "code": "64",
        "name": "宁夏回族自治区",
        "level": "0",
        "parent": null
      },
      {
        "code": "65",
        "name": "新疆维吾尔自治区",
        "level": "0",
        "parent": null
      }
    ],
    region1: [{
        "code": -1,
        "name": "请选择",
      },
      {
        "code": "1101",
        "name": "市辖区",
        "level": "1",
        "parent": "11"
      }
    ],
    region2: [{
      "code": -1,
      "name": "请选择",
    }, ],
    region3: [{
      "code": -1,
      "name": "请选择",
    }, ]
  },

  /**
   * 组件的方法列表
   */
  methods: {
    // 写一个数组对比方法，该方法接收两个数组，对比两个数组中哪一项发生了变化，返回变化的索引和对应的值
    arrCompare(newArr,oldArr){
      let diff = 0
      newArr.some((item,index) => {
        if(item !== oldArr[index]){
          diff = index
          return true
        }
      }) 

      return {
        index : diff,
        value:newArr[diff]
      }
    },
    // 当用户选择新的区域，会触发该方法
    async onPickerChange({
      detail:{
        value
      }
    }){
      // 可拿到用户最新索引的数组
      console.log(value);
      // 调用数组对比方法，获取用户变动是哪一组区域的索引，以及变化后的值
      const {
        index:diffIndex,
        value:diffValue
      } = this.arrCompare(value,this.data.value)
      this.setData({
        value
      })
      // 根据上述的值 就可以获取当前用户选择是哪一个区域的信息
      const region = this.data[`region${diffIndex}`][diffValue]

      // 请求该区域下子区域的信息
      const res = await request('/region/',{
        parent:region.code
      })
      // console.log(res);

      this.setData({
        [`region${diffIndex+1}`]:[{
            "code": -1,
          "name": "请选择",
        },...res]
      })

      // 组织数据形式，把用户当前的区域数据传递出去
      const {value:arrValue,region0,region1,region2,region3} = this.data
      this.triggerEvent('change',[
        region0[arrValue[0]],
        region1[arrValue[1]],
        region2[arrValue[2]],
        region3[arrValue[3]],
      ])

    }


  }
})
